import axios from "axios"
import store from "../store"
import { message } from "antd"

import { createBrowserHistory } from "history"

const customHistory = createBrowserHistory()

const baseURL = "http://toutiao.itheima.net/v1_0"

const http = axios.create({
  baseURL,
  timeout: 5000
})

// 请求拦截器
http.interceptors.request.use((config) => {
  // 获取token
  const { login } = store.getState()
  const token = login.token
  // 除了登录请求外，其他请求统一添加 token
  if (!config.url.startsWith("/authorizations")) {
    config.headers.Authorization = `Bearer ${token}`
  }

  return config
})

http.interceptors.response.use(undefined, (error) => {
  if (!error.response) {
    message.error("网络繁忙，请稍后再试")
    return Promise.reject(error)
  }

  if (error.response.status === 401) {
    // 说明 token 过期了，登录超时，此时，就让重定向到登录页面，让用户重新登录
    message.error("登录超时，请重新登录", 1, () => {
      // push() 也可以通过第二个参数来指定路由跳转时携带的额外的信息
      customHistory.push("/login", {
        from: customHistory.location.pathname
      })

      // 触发退出 action，将 token 等清除
      // store.dispatch(logout())
    })
  }
  return Promise.reject(error)
})

export { http }
